10818번 최소, 최대
Day4 4단계 20231021
-
내가 쓴 코드의 구조
- 키보드 입력을 받고 List<Integer> list를 만들어서 내용을 저장
- 배열을 list.sort(Comparator.naturalOrders())로 오름차순 정렬한 뒤, 최소값은 배열의 첫 값, 최대값은 배열의 마지막 값으로 저장했다.
-
다른 사람들이 쓴 코드 중에 속도가 더 빠른 코드가 있다. 무슨 메커니즘인지 찾아보자
-
키보드 입력을 받아서 배열에 저장하는 곳 까지는 동일한데 최대 최소 비교가 훨씬 간단하다.
- 배열의 첫 번째 값을 최대값과 최소값으로 설정하고, 나머지 배열 요소와 비교하여 최대 최소를 정한다.
int[] nums = new int[length];
int max = nums[0];
int min = nums[0];
for(int i : nums) {
if(i > max) {
max = i;
}
if(i < min) {
min = i;
}
}
- 이 코드는 처리 시간이 1180mx가 걸렸다
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
BufferedReader br;
BufferedWriter bw;
StringTokenizer st;
List<Integer> numArray = new ArrayList<>();
int max = 0;
int min = 0;
try {
br = new BufferedReader(new InputStreamReader(System.in));
bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine(), " ");
for (int i = 1; i <= n; i++) {
numArray.add(Integer.parseInt(st.nextToken()));
}
numArray.sort(Comparator.naturalOrder());
bw.write(numArray.get(0) + " " + numArray.get(n-1));
bw.flush();
bw.close();
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 이 코드는 처리 속도가 1440ms 걸렸다
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
BufferedReader br;
BufferedWriter bw;
StringTokenizer st;
StringBuilder sb = new StringBuilder();
try {
br = new BufferedReader(new InputStreamReader(System.in));
bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine(), " ");
int[] numArray = new int[n];
for (int i = 0; i < n; i++) {
numArray[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(numArray);
sb.append(numArray[0] + " " + numArray[n-1]);
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 이 코드는 처리 속도가 508ms 걸렸다
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
int max = 0;
int min = 0;
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
int[] nums = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < n; i++) {
nums[i] = Integer.parseInt(st.nextToken());
}
max = nums[0];
min = nums[0];
for (int i : nums) {
if (i > max) {
max = i;
}
if (i < min) {
min = i;
}
}
bw.write(min + " " + max);
bw.flush();
bw.close();
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}